package com.wy.sloth.receiver.model;

import java.util.HashMap;
import java.util.Map;

/**
 * 响应数据
 * 
 * @author wangyuan
 * @since 2019年3月7日
 */
public class R extends HashMap<String, Object> {
	
	/**
     * 
     */
    private static final long serialVersionUID = -1366412706486877296L;
    
    /**
	 * 关于服务器返回给客户端的code，如何有其他特殊通用code，请在这里进行定义之后再使用
	 */
	public static final Integer CODE_SUCCESS = 0;//成功常用返回code
	public static final Integer CODE_ERROR = 9999;//失败常用返回code
	
	public R() {
		put("code", CODE_SUCCESS);
		put("msg", "success");
	}
	
	public R(Object data) {
        put("code", CODE_SUCCESS);
        put("msg", "success");
        put("data", data);
    }
	
	public static R error() {
		return error(CODE_ERROR, "未知异常，请联系管理员");
	}
	
	public static R error(String msg) {
		return error(CODE_ERROR, msg);
	}
	
	/**
	 * 自定义code和msg
	 */
	public static R error(int code, String msg) {
		R r = new R();
		r.put("code", code);
		r.put("msg", msg);
		return r;
	}

	/**
	 * 自定义msg
	 */
	public static R ok(String msg) {
		R r = new R();
		r.put("msg", msg);
		return r;
	}
	
	/**
	 * 自定义msg和返回data
	 */
	public static R ok(String msg, Object data) {
        R r = new R();
        r.put("msg", msg);
        r.put("data", data);
        return r;
    }
	
	public static R ok(Map<String, Object> map) {
		R r = new R();
		r.putAll(map);
		return r;
	}
	
	public static R ok() {
		return new R();
	}

	@Override
	public R put(String key, Object value) {
		super.put(key, value);
		return this;
	}
	
	public R putData(Object value) {
        super.put("data", value);
        return this;
    }
}
